<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>OpenShoe: nav_eq.h File Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenShoe
   &#160;<span id="projectnumber">1.0</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#define-members">Defines</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">nav_eq.h File Reference</div>  </div>
</div>
<div class="contents">

<p>Header file for the OpenShoe navigation algorithm.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="nav__types_8h_source.html">nav_types.h</a>&quot;</code><br/>
<code>#include &lt;math.h&gt;</code><br/>
<code>#include &lt;stdint.h&gt;</code><br/>
<code>#include &quot;compiler.h&quot;</code><br/>
</div>
<p><a href="nav__eq_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#gac33a980808c64969262d91fa090eae7d">MAX_ORIENTATIONS</a>&#160;&#160;&#160;12</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum numbers of orientations that can be used in the accelerometer calibration.  <a href="group__nav__eq.html#gac33a980808c64969262d91fa090eae7d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#ga4a21daf1ec76403dafe6b89d46fedbce">MIN_ORIENTATIONS</a>&#160;&#160;&#160;3</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum numbers of orientations that can be used in the accelerometer calibration.  <a href="group__nav__eq.html#ga4a21daf1ec76403dafe6b89d46fedbce"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#ga2543e63d374d215bd7e64b4afb54287f">MATRIX_INVERSION_ERROR</a>&#160;&#160;&#160;1</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Value returned in the error message if an error occurred in the matrix inversion.  <a href="group__nav__eq.html#ga2543e63d374d215bd7e64b4afb54287f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#gad356bf235d99e4983077623c35c068c0">ACC_STATIONARITY_ERROR</a>&#160;&#160;&#160;2</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Value returned in the error message if the IMU was not stationary during the accelerometer calibration.  <a href="group__nav__eq.html#gad356bf235d99e4983077623c35c068c0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#ga831d1c30dc8456f94b32e61f65409f4d">ACC_CALIBRATION_ILLCONDITIONED</a>&#160;&#160;&#160;3</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Value returned in the error message if the orientations used in the accelerometer calibration were poorly chosen.  <a href="group__nav__eq.html#ga831d1c30dc8456f94b32e61f65409f4d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#gae34482207df685c69af65539f47656fa">NUMBER_OF_ORIENTATIONS_TO_LARGE</a>&#160;&#160;&#160;4</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Value returned in the error message if the number of orientations specified for the accelerometer calibration is to large. It has been changed to 12.  <a href="group__nav__eq.html#gae34482207df685c69af65539f47656fa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#gad656aa8d45ef9064bf607734a3af16a1">NUMBER_OF_ORIENTATIONS_TO_SMALL</a>&#160;&#160;&#160;5</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Value returned in the error message if the number of orientations specified for the accelerometer calibration is to few. It has been changed to 3.  <a href="group__nav__eq.html#gad656aa8d45ef9064bf607734a3af16a1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#ga8add91659e5cb9c98d3a32c44269f034">absf</a>(a)&#160;&#160;&#160;(a&gt;0 ? a:-a)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Absolute value of a floating point variable.  <a href="group__nav__eq.html#ga8add91659e5cb9c98d3a32c44269f034"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#gabb3f28a44a35898c77d789734914c4c2">calibrate_accelerometers</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function for calibrating the accelerometer biases.  <a href="group__nav__eq.html#gabb3f28a44a35898c77d789734914c4c2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#ga272f4012a72ac416888be28bff0236e6">estimate_accelerometer_biases</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that estimates the accelerometer biases given a matrix of the mean of the measured acceleration at different orientations.  <a href="group__nav__eq.html#ga272f4012a72ac416888be28bff0236e6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#ga8812381ada5c2786a10e378e4ca34377">correct_navigation_states</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function for correcting the navigation states given a zero-velocity detection.  <a href="group__nav__eq.html#ga8812381ada5c2786a10e378e4ca34377"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#ga75c4a936b2db01f930ba89babb822f69">gain_matrix</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function for calculating the Kalman filter gain matrix.  <a href="group__nav__eq.html#ga75c4a936b2db01f930ba89babb822f69"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#ga8b0f8dc8c2ae1ff3f5e4f27284cf8e77">initialize_navigation_algorithm</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function for initializing the navigation algorithm.  <a href="group__nav__eq.html#ga8b0f8dc8c2ae1ff3f5e4f27284cf8e77"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#gaa1673f6cf928e97c6372c56eddb4cc72">measurement_update</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function for doing a measurement update of the Kalman filter covariance.  <a href="group__nav__eq.html#gaa1673f6cf928e97c6372c56eddb4cc72"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#ga9169808fbcb9f517deb908960a69ca7a">strapdown_mechanisation_equations</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function for doing a time update of the mechanized navigation equations.  <a href="group__nav__eq.html#ga9169808fbcb9f517deb908960a69ca7a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#gac80ad2aa648edb47edb8f62883cb2a7d">time_up_data</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function for doing a time update of the Kalman filter state covariance.  <a href="group__nav__eq.html#gac80ad2aa648edb47edb8f62883cb2a7d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#gaae1bbd924940610e1709300d40ca5a0f">update_imu_data_buffers</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that updates the IMU data buffers with the latest values read from the IMU, and writes the IMU data to that should be process at the current iteration to the processing variables.  <a href="group__nav__eq.html#gaae1bbd924940610e1709300d40ca5a0f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#gaf0b7424f50d37755b6b0736808082299">ZUPT_detector</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function for detecting when the system has zero-velocity.  <a href="group__nav__eq.html#gaf0b7424f50d37755b6b0736808082299"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__nav__eq.html#ga0b4ee34435eebb426eb367120ee79d72">zupt_update</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Wrapper function that checks if a zero-velocity update should be done, and then calls all navigation algorithm functions that should be executed during a zero-velocity update.  <a href="group__nav__eq.html#ga0b4ee34435eebb426eb367120ee79d72"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header file for the OpenShoe navigation algorithm. </p>
<p>This is the header file for the OpenShoe navigation algorithm. It includes the function declarations for all the signal processing functions needed to implement a zero-velocity aided inertial navigation system using a nine state Kalman filter working in a complimentary feedback configuration. It also includes function declarations for the functions needed to implement a accelerometer bias calibration framework.</p>
<dl class="author"><dt><b>Authors:</b></dt><dd>John-Olof Nilsson, Isaac Skog </dd></dl>
<dl class="copyright"><dt><b>Copyright:</b></dt><dd>Copyright (c) 2011 OpenShoe, ISC License (open source) </dd></dl>
</div></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>



<hr class="footer"/><address class="footer"><small>
Generated on Tue Dec 20 2011 12:12:36 for OpenShoe by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.5.1
</small></address>

</body>
</html>
